package com.generator.service.common;

import org.apache.commons.lang.StringUtils;

/**
 * 字段工具
 * User: wangyanginfo
 * Date: 12-9-24
 * Time: 下午1:34
 */
public class FieldUtil {

    /**
     * 获取字段对应JAVA类型
     *
     * @param sqlType 数据库类型
     * @return
     */
    public final static String getFieldTypeByMsql(String sqlType) {
        return MySqlFieldType.valueOf(sqlType).getJavaType();
    }

    /**
     *  获取首字母大写的名称
     * @param name 名称
     * @return
     */
    public final static String getFieldName(String name) {
        StringBuilder buffer = new StringBuilder(name.length());
        buffer.append(StringUtils.upperCase(name.substring(0, 1)));
        buffer.append(name.substring(1, name.length()));
        return name;
    }

    /**
     *  获取以分割符分割的转换后字段名称（各分割后的首字线大写）
     * @param name 名称
     * @param split 分割符
     * @return
     */
    public final static String getFieldName(String name, String split) {
        String[] names = name.split(split);
        StringBuilder buffer = new StringBuilder(name.length());
        for (String str : names) {
            buffer.append(getFieldName(str));
        }
        return name;
    }

    /**
     *  字符名称是否需要转小写
     * @param name 名称
     * @param isCase 是否转小写
     * @return
     */
    public final static String getFieldName(String name, boolean isCase) {
        if (isCase) {
            name = StringUtils.lowerCase(name);
        }
        return  getFieldName(name);
    }

    /**
     *  字符名称是否需要转小写，并以分割符进行分割转换
     * @param name 名称
     * @param isCase 是否转小写
     * @param split 分割符
     * @return
     */
    public final static String getFieldName(String name, boolean isCase, String split) {
        if (isCase) {
            name = StringUtils.lowerCase(name);
        }
        return  getFieldName(name, split);
    }

}
